/*
 * ================================================================================变量定义区
 */
var showCount = 10; //定义每页显示条数
var currentPage = 1;//全局变量，当前页
/*
 * ================================================================================页面初始化函数
 */
$(function()
{	
	var pageType = $("#pageType").val();
	//获取上次列表
	if(pageType === 'lastest')
	{
		getLastestListAndForm();
	}
	else
	{
		getCurrentList(currentPage);
	}
	
	//回车键绑定事件
	document.onkeydown = function(event)
	{
	    var e = event || window.event || arguments.callee.caller.arguments[0];
	    
	     if(e && e.keyCode==13) // enter 键
	     {
	         //从第一页开始，查询数据
	    	 queryUserList();
	     }
	};
	
	//加载部门树
	departmentTree();
});

/*
 * ================================================================================函数定义区
 * 
 */

/**
 * 获取列表数据
 * @param currentPage 请求的页码
 */
function getDataList(param)
{		
	$.ajax(
	{
		type: 'POST',
        url: BASE_PATH +'/userManagement/getUserList.do',
        dataType:"json",
        data:param,    
        success:function(data,textStatus)
        {
        	var html = "";        	
        	var pageData = data;
        	var totalResult = pageData.queryParam.totalResult;
        	
        	if(pageData.queryResult != null)
        	{
        		//解析data, 组装成html
	        	$.each(pageData.queryResult,function(i,n)
	        	{	  
	        		html +='<tr onclick="chooseRow(this,false);"  id="tr_index_'+i+'">';
	        		html +=     '<input  name="createUser" type="hidden" value="' + n.username + '" />';	      		
	        		html +=		'<td title='+switcHtml(check(n.username))+'>'+switcHtml(check(n.username))+'</td>';
	        		html +=		'<td title='+switcHtml(check(n.dept_name))+'>'+switcHtml(check(n.dept_name))+'</td>';
	        		html +=		'<td title='+switcHtml(check(n.cn_name))+'>'+switcHtml(check(n.cn_name))+'</td>';
	        		html +=		'<td title='+switcHtml(check(n.email))+'>'+switcHtml(check(n.email))+'</td>';
	        		html +=		'<td title='+switcHtml(check(n.role_name))+'>'+switcHtml(check(n.role_name))+'</td>';
	        		html +=		'<td style="text-align: center;" title='+switcHtml(check(n.online_status))+'>'+switcHtml(check(n.online_status))+'</td>';
	        		html +=     '<input  name="onlineStatus" id ="onlineStatus" type="hidden" value="' + n.online_status + '" />';
	        		html +=     '<td style="width: 1px;"></td>';
	        		html +='</tr>';
	        	});  
        	}
        	
        	$('#tBodyList').html(html);
        	
        	//请求第一页时，同时初始化分页插件。  
        	currentPage = param.currentPage;
        	
    		if(totalResult == 0)
    		{
    			$('#tBodyList').html('<tr><td style="text-align:center;">No items.</td></tr>');
    			$("#pagination").hide();
    		} 
    		else 
    		{
    			// 创建分页
    			$("#pagination").show();
    			$("#pagination").pagination(totalResult, 
    			{
    				num_edge_entries: 1, //边缘页数
    				num_display_entries: 3, //主体页数
    				current_page:currentPage,
    				callback: pageListCallback,
    				items_per_page:showCount //每页显示1项
    			});
    		}
        	chooseId = null;
        	
        },
        
		error:function(e)
		{
			openAlert("加载数据错误！"); 
			 return;
		}
	});
} 

/**
 * 查询用户ad,i
 */
function queryUserList()
{
	getCurrentList(1);
}

/**
 * 跳转到创建用户页面。
 */
function createUser()
{
	$("#submitForm [name=username]").val("");
	//设置SessionStorage表单当前信息
	setUnSearchFormParam();
	$("#submitForm").submit();
}

/**
 * 跳转进入修改页面
 */
function updateUser()
{
	//获取选中的行的id
	var id = getSelectedRows();
	if(!id || id.length<1)
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	var username = $("#"+id+" td:first").text();
	$("#submitForm [name=username]").val(username);
	//设置SessionStorage表单当前信息
	setUnSearchFormParam();
	$("#submitForm").submit();
}

/**
 * 删除用户
 */
function deleteUser()
{
	
	//获取选中的行的id
	var id = getSelectedRows();
	
	if(!id || id.length<1)
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	openConfirm("确定删除吗？",null,function()
	{
		var username = $("#"+id+" td:first").text();
		$.ajax(
		{
			type: 'POST',
	        url: BASE_PATH +'/userManagement/deleteUser.do',
			data:
			{
				"username":username
			},
			dataType:"json",
			
			success : function(data) 
			{
				
				if(data=='success')
				{
					openAlert('删除成功',function()
					{
						//清除选中id
						chooseId = null;
						getCurrentList(currentPage);
					});
				}
				else
				{
					//清除选中id
					chooseId = null;
					openAlert(data);
				}
				
			},
			
			error:function(e)
			{
				openAlert('操作失败！错误信息：<div>'+e.responseText+"</div>");
			}
		});
	});
}

/**
 * 强制用户下线
 * @returns {Boolean}
 */
function enforceUserExit() 
{
	var id = getSelectedRows();
	if (!id || id.length < 1) 
	{
		openAlert('请选择一条记录');
		return false;
	}
	var currentUser = $("#singleIdHidden").val();
	var createUser = $("#" + id).find("input[name=createUser]").val();
	var onlineStatus = $("#" + id).find("input[name=onlineStatus]").val();
	
	if (createUser == currentUser)
	{
		openAlert('不能强制下线当前用户');
		return false;
	}	
	
	if (onlineStatus == '离线')
	{
		openAlert('此用户已经离线');
		return false;
	}
	
	openConfirm('确定强制此用户下线吗？', null, function() {
		$("#submitForm2 [name=createUser]").val(createUser);
		//设置SessionStorage表单当前信息
		setUnSearchFormParam();
		$("#submitForm2").submit();
		
	},null);	
}

/**
 * 判断是值否为空
 * @param name
 * @returns name 返回检查后的name
 */
function check(name)
{
	if(name == null)
	{
		return name='';
	}
	else
	{
		return name;
	}
}

/**
 * 获取当前请求列表
 * @param pageIndex
 */
function getCurrentList(pageIndex)
{
	//获取查询参数
	var username = $("#username").val().trim().toUpperCase();
	var dept_name = $("#dept_name").val().trim().toUpperCase();
	var online_status = $("#online_status").val().trim();
	var dept_id =  $.trim($("#dept_id").val());
		
	var param = 
	{
	    "showCount"     :showCount,
	    "currentPage"   :pageIndex,
	    "username"      :username,
	    "dept_name"     :dept_name,
	    "dept_id"		:dept_id,
	    "online_status" :online_status,
	    "query_condition_field_list" :"username,dept_name,online_status,dept_id"
    };
	getDataList(param);
	
	//向SessionStorage存储数据
	SessionStorage.setSearchParam(
	{
		formParam: 
		{
			username: username,
			dept_name: dept_name,
			online_status: online_status,		
		},
		searchParam: param
	});
}

/**
 * 获取最近一次的列表
 * 从SessionStorage中获取参数
 */
function getLastestListAndForm()
{
	// 获取参数
	var param = SessionStorage.getSearchParam(),
	// 表单参数
	formParam = param.formParam,
	// 搜索参数
	searchParam = param.searchParam;

	$("#username").val(formParam.username);
	$("#dept_name").val(formParam.dept_name);
	$("#dept_id").val(formParam.dept_id);
	$("#online_status").val(formParam.online_status);
	// 列表获取
	getDataList(searchParam);
	
	// 向SessionStorage存储数据
	SessionStorage.setSearchParam(
	{
		formParam : formParam,
		searchParam : searchParam
	});
}

/**
 * 分页数据回调函数
 * @param pageIndex 请求页
 */
function pageListCallback(pageIndex)
{
	getCurrentList(pageIndex);
}

/**
 * 设置未进行搜索的表单信息
 */
function setUnSearchFormParam()
{
	// 获取参数
	var param = SessionStorage.getSearchParam();
	// 设置表单参数
	param.formParam = 
	{
		username  : $("#username ").val(),
		dept_name : $("#dept_name").val(),
		online_status : $("#online_status").val()
	};
	// 重置SessionStrage数据
	SessionStorage.setSearchParam(param);
}



/**
 * 加载树和树的点击事件
 */
function departmentTree()
{
	
	var setting = 
	{
			view: 
			{
				dblClickExpand: false
			},
			
			data: 
			{
				
				key: 
				{
					title:"titleTip"
				},
				
				simpleData: 
				{
					enable: true
				}
			},
			
			callback:
			{
				
				onClick: treeOnClick
			}
		};

	var zNodes = '[';
	
	$.ajax(
	{
		type: 'POST',
        url: BASE_PATH +'/userManagement/queryDepts.do',
        dataType:"json",
        data:
        {
        	
        },
        
        success:function(data,textStatus)
        {
        	
        	for( var i = 0; i < data.length; i++ )
        	{
        		zNodes += '{id:"' + convertSpecialChar(data[i].deptId) + '",';
        		zNodes += 'pId:' + data[i].parentId + ',';
        		zNodes += 'name:"' + convertSpecialChar( data[i].deptName ) + '",';
        		zNodes += 'titleTip:"' + convertSpecialChar( data[i].deptName ) + '",';
        		
        		if( data[i].deptDesc == null )
        		{
            		zNodes += 'deptDesc:"",';
        		} 
        		else 
        		{
            		zNodes += 'deptDesc:"' + convertSpecialChar( data[i].deptDesc ) + '",';
        		}
        		zNodes += 'isLeaf:"' + data[i].isLeaf + '",';
        		zNodes += 'open:true}';
        		
        		if( i != (data.length - 1) )
        		{
        			zNodes += ',';
        		}
        	}
        	zNodes += ']';
    		// 加载树
    		$.fn.zTree.init($("#departmentTree"), setting, eval(zNodes));    		
        },
        
		error:function(e)
		{
			openAlert("加载数据错误！"); 
			return;
		}
	});
	
}

/**
 * 树单击事件
 * @param e js的event对象
 * @param treeId 树id
 * @param treeNode 树节点对象
 */
function treeOnClick(e, treeId, treeNode) 
{
	var zTree = $.fn.zTree.getZTreeObj("departmentTree"),
		nodes = zTree.getSelectedNodes(),
		v = "",
		id = "";
	nodes.sort(function compare(a,b){return a.id-b.id;});
	
	for (var i=0, l=nodes.length; i<l; i++) 
	{
		v += nodes[i].name + ",";
		id += nodes[i].id + ",";
	}
	
	if (v.length > 0 ) v = v.substring(0, v.length-1);
	
	if (id.length >0 ) id = id.substring(0,id.length-1);
	
	var cityObj = $("#dept_name");
	cityObj.attr("value", v);
	
	$("#dept_id").val(id);	
	hideMenu();
	
}

/**
 * 显示树
 */
function showMenu() 
{
	
	var cityObj = $("#dept_name");
	var cityOffset = $("#dept_name").offset();
	$("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top 
		+ cityObj.outerHeight() + "px"}).slideDown("fast");
	$("body").bind("mousedown", onBodyDown);
	
}

/**
 * 隐藏树
 */
function hideMenu() 
{
	
	$("#menuContent").fadeOut("fast");
	$("body").unbind("mousedown", onBodyDown);
	
}

/**
 * 判断是否隐藏树
 * @param event 事件源
 */
function onBodyDown(event)
{
	
	if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" 
		|| $(event.target).parents("#menuContent").length>0)) 
	{
		hideMenu();
	}
	
}
